776e4f7991c4f5637f9a945ed9190a26ff295446,src/com/android/providers/downloads/Helpers.java,Helpers,isFilenameValid,#String#File#,346
Before Change
return false;
}
return filename.startsWith(Environment.getDownloadCacheDirectory().toString())
|| filename.startsWith(downloadsDataDir.toString())
|| filename.startsWith(Environment.getExternalStorageDirectory().toString());
}
After Change
/**
* Checks whether the filename looks legitimate
*/
static boolean isFilenameValid(String filename, File downloadsDataDir) {
final String[] whitelist;
try {
filename = new File(filename).getCanonicalPath();
whitelist = new String[] {
downloadsDataDir.getCanonicalPath(),
Environment.getDownloadCacheDirectory().getCanonicalPath(),
Environment.getExternalStorageDirectory().getCanonicalPath(),
};
} catch (IOException e) {
Log.w(TAG, "Failed to resolve canonical path: " + e);
return false;
}
for (String test : whitelist) {
if (filename.startsWith(test)) {
return true;
}
}
return false;
}
/**